package com.cqh.recruit.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cqh.recruit.pojo.dto.ActivityQueryDto;
import com.cqh.recruit.pojo.dto.StudentActivityQueryDTO;
import com.cqh.recruit.pojo.entity.Activity;
import com.cqh.recruit.pojo.vo.ActivityListVo;
import com.cqh.recruit.pojo.vo.StudentActivityListVO;
import com.cqh.recruit.result.Result;


/**
 * <p>
 * 活动信息表 服务类
 * </p>
 *
 * @author dh
 * @since 2025-10-18
 */
public interface IActivityService extends IService<Activity> {

    Page<ActivityListVo> findActivityByQueryDto(ActivityQueryDto activityQueryDto);

    ActivityListVo findActivityById(Long id);


    /**
     * 根据查询条件分页查询活动列表
     * @param queryDto
     * @return
     */
    Page<StudentActivityListVO> queryActivityList(StudentActivityQueryDTO queryDto);

    /**
     * 查询当前登录学生已报名的活动列表
     * @param queryDto
     * @return
     */
    Page<StudentActivityListVO> queryEnrolledActivityList(StudentActivityQueryDTO queryDto);

    /**
     * 活动报名
     * @param activityId
     * @param stuId
     * @return
     */
    Result applyActivity(Long activityId, Long stuId);

    /**
     * 取消报名
     * @param activityId
     * @param stuId
     * @return
     */
    Result cancelApplication(Long activityId, Long stuId);

    /**
     * 查询报名状态
     * @param activityId
     * @param stuId
     * @return
     */
    Result getApplicationStatus(Long activityId, Long stuId);
}
